unit uSAF0034_03;

interface

uses
   Windows,
   Messages,
   SysUtils,
   Variants,
   Classes,
   Graphics,
   Controls,
   Forms,
   Dialogs,
   ComCtrls,
   Menus,
   ActnList,
   ExtCtrls,
   DB,
   ADODB,
   DBCtrls,
   StdCtrls,
   WideStrings,
   FMTBcd,
   ImgList,
   ToolWin,
   Mask;

type
   TfrmInsUpd = class(TForm)
      pnlCentro: TPanel;
      actInsUpd: TActionList;
      actInsUpdSalvar: TAction;
      actInsUpdFechar: TAction;
      ilInsUpd: TImageList;
      dsTabela: TDataSource;
      lblDESCRICAO: TLabel;
      edtDESCRICAO: TDBEdit;
      pnlInferior: TPanel;
      tlbInsUpd: TToolBar;
      btnSalvar: TToolButton;
      btnS1: TToolButton;
      btnFechar: TToolButton;
      dbnvgrLista: TDBNavigator;
      statPrincipal: TStatusBar;
      dbmmoDETALHE_BANCARIO: TDBMemo;
      lblOBS: TLabel;
      lblDados: TLabel;

      procedure FormShow(Sender: TObject);

      procedure FormKeyPress(Sender: TObject; var Key: Char);
      procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

      procedure actInsUpdSalvarExecute(Sender: TObject);
      procedure actInsUpdFecharExecute(Sender: TObject);
      procedure dsTabelaStateChange(Sender: TObject);
      procedure dbmmoDETALHE_BANCARIOExit(Sender: TObject);
      procedure lblDadosClick(Sender: TObject);

   private

   const
      EMPRESA_CONSULTA =
         'SELECT' +
         ' SAF0101.RAZAO,' +
         ' SAF0101.CNPJ,' +
         ' SAF0015.DESCRICAO AS LOGRAD_TIPO,' +
         ' SAF0012.LOGRADOURO,' +
         ' SAF0012.NUMERO,' +
         ' SAF0012.COMPLEMENTO,' +
         ' SAF0012.BAIRRO,' +
         ' SAF0012.CIDADE,' +
         ' SAF0012.ESTADO,' +
         ' SAF0012.CPOSTAL' +
         '' +
         ' FROM SAF0101' +
         '' +
         ' JOIN SAF0012 ON (SAF0012.ID_EMPRESA = SAF0101.ID_EMPRESA)' +
         ' JOIN SAF0015 ON (SAF0015.ID_TIPO_LOGRAD = SAF0012.ID_TIPO_LOGRAD)';

      { Private declarations }

      public

      _INSUPD_TIPO: Integer;
      _INSUPD_ID: Integer;

      { Public declarations }

   end;

var
   frmInsUpd: TfrmInsUpd;

implementation

{$R *.dfm}

uses
   uLibGlobal,
   uSAF0034_01;

procedure TfrmInsUpd.actInsUpdFecharExecute(Sender: TObject);
begin
   if (DMDados.tblTabela.State in [dsInsert, dsEdit]) then
   begin
      DMDados.tblTabela.Cancel;
   end;

   Self.Close;
end;

procedure TfrmInsUpd.actInsUpdSalvarExecute(Sender: TObject);
var
   chaveID: integer;
begin
   if (DMDados.tblTabela.State in [dsInsert, dsEdit]) then
   begin
      if Application.MessageBox(
         PChar('DESEJA REALMENTE SALVAR O REGISTRO ?'),
         PChar(Application.Title),
         MB_YESNO + MB_ICONQUESTION) = IDYES then
      begin
         DMDados.tblTabela.FieldByName('ID_EMPRESA').AsInteger := DMDados._TIPO_CHAVE;

         DMDados.tblTabela.Post;

         fAtualizaDS(DMDados.qryLista);

         actInsUpdFecharExecute(Sender);
      end;
   end;
end;

procedure TfrmInsUpd.dbmmoDETALHE_BANCARIOExit(Sender: TObject);
begin
   actInsUpdSalvarExecute(Sender);
end;

procedure TfrmInsUpd.dsTabelaStateChange(Sender: TObject);
begin
   dbnvgrLista.Enabled := not (dsTabela.State in [dsInsert, dsEdit]);

   edtDESCRICAO.Enabled := (dsTabela.State in [dsInsert, dsEdit]);
   lblDados.Enabled := (dsTabela.State in [dsInsert, dsEdit]);
   dbmmoDETALHE_BANCARIO.Enabled := (dsTabela.State in [dsInsert, dsEdit]);

   actInsUpdSalvar.Enabled := (dsTabela.State in [dsInsert, dsEdit]);
end;

procedure TfrmInsUpd.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
   fNotCtrlDelete(Key, Shift);
end;

procedure TfrmInsUpd.FormKeyPress(Sender: TObject; var Key: Char);
begin
   fTabToEnter(Key, Self);
end;

procedure TfrmInsUpd.FormShow(Sender: TObject);
begin
   fMontarTelaInsUpd(Self, 420, 550);

   fAtualizaDS(DMDados.tblTabela);

   case _INSUPD_TIPO of
      0: //INSERIR
         begin
            Self.Caption := DMDados._sistemaNome + ' - INSERIR REGISTRO';

            DMDados.tblTabela.Insert;
         end;

      1: //EDITAR
         begin
            Self.Caption := DMDados._sistemaNome + ' - ALTERAR REGISTRO';

            DMDados.tblTabela.Locate(
               DMDados._TIPO_CAMPO,
               _INSUPD_ID, [loCaseInsensitive, loPartialKey]);

            DMDados.tblTabela.Edit;
         end;

      2: //CONSULTAR
         begin
            Self.Caption := DMDados._sistemaNome + ' - CONSULTAR REGISTRO';

            DMDados.tblTabela.Locate(
               DMDados._TIPO_CAMPO,
               _INSUPD_ID, [loCaseInsensitive, loPartialKey]);
         end;
   end;
end;

procedure TfrmInsUpd.lblDadosClick(Sender: TObject);
var
   vCampoId: string;
   vChave: string;

   empresaRazao: string;
   empresaCNPJ: string;
   empresaLogradTipo: string;
   empresaLogradouro: string;
   empresaNumero: string;
   empresaComplemento: string;
   empresaBairro: string;
   empresaCidade: string;
   empresaEstado: string;
   empresaCPostal: string;
begin
   vCampoId := 'SAF0101.ID_EMPRESA';
   vChave := IntToStr(DMDados._TIPO_CHAVE);

   _instrucaoSQL :=
      EMPRESA_CONSULTA +
      ' WHERE ' + vCampoId + ' = ' + vChave;

   fRetornaSQLADO2(DMDados.qryAuxiliar, _instrucaoSQL);

   empresaRazao := DMDados.qryAuxiliar.Fields[0].AsString;
   empresaCNPJ := DMDados.qryAuxiliar.Fields[1].AsString;
   empresaLogradTipo := DMDados.qryAuxiliar.Fields[2].AsString;
   empresaLogradouro := DMDados.qryAuxiliar.Fields[3].AsString;
   empresaNumero := DMDados.qryAuxiliar.Fields[4].AsString;
   empresaComplemento := DMDados.qryAuxiliar.Fields[5].AsString;
   empresaBairro := DMDados.qryAuxiliar.Fields[6].AsString;
   empresaCidade := DMDados.qryAuxiliar.Fields[7].AsString;
   empresaEstado := DMDados.qryAuxiliar.Fields[8].AsString;
   empresaCPostal := DMDados.qryAuxiliar.Fields[9].AsString;

   DMDados.qryAuxiliar.Close;

   DMDados.tblTabela.FieldByName('DETALHE_BANCARIO').AsString :=
      empresaRazao + #13#10 +
      'CNPJ: ' + empresaCNPJ + #13#10 +
      empresaLogradTipo + ' ' + empresaLogradouro + ', ' + empresaNumero + ' ' + empresaComplemento + #13#10 +
      empresaCPostal + ' ' + empresaBairro + ' - ' + empresaCidade + ' - ' + empresaEstado;
end;

end.

